Міністерство освіти і науки України.
Національний університет “Львівська політехніка”
ІКТАМ
Кафедра ЕОМ
КУРСОВИЙ ПРОЕКТ
з предмету:
“Системне програмування”
на тему:
“Розробка системних програмних модулів та компонент систем програмування”
Львів-2007
АНОТАЦІЯ
Транслятором називається програма перекладу (трансляції) початкової програми, записаною вхідною мовою, в еквівалентну їй об`єктну програму. Якщо мова високого рівня є вхідною, а мова асемблера чи машинна – вихідною, то такий транслятор називається компілятором.
Компілятори дозволяють створювати об`єктні модулі, які пізніше, після етапу зв`язування відлагоджувачем, перетворюються у виконавчі файли.
Потреба різноманіття компіляторів дуже важлива, це прямо залежить від вхідної мови, яку він перекладає. Кожна з них реалізує клас задач, необхідних для користувача.
Кажучи простіше, існує виконавець – автомат або персональна ЕОМ, що вміє реалізувати скінчений набір дій. Наказ на виконання дії з вказаного набору, що виражається певним, раніше обумовленим способом, називається розпорядженням, а вся сукупність допустимих наказів – системою розпорядження виконавця.
Даючи завдання виконавцю на деяку роботу, ми звичайно даємо йому не одне розпорядження, а деяку скінчену послідовність розпоряджень, задаючи також порядок, у якому вони виконуються. Така послідовність розпоряджень з вказанням порядку їх виконання називається програмою.
Саме програма на певній мові програмування є вхідним даним для компілятора, що разом з відлагоджувачем перекладає послідовність команд у спеціальні машинні коди і здійснює виконання вхідної послідовності команд запуском відповідного виконавчого файлу.
ЗАВДАННЯ
Варіант 52;
Розробити компілятор вхідної мови програмування , короткий опис якої подано нижче:
- типи даних: int_4;
- оператор вводу: get ();
- оператор виводу: put ();
- блок тіла програми:
- оператор: do-while (сі);
- регістр ключових слів: Lov;
- регістр ідентифікаторів: Up-Low4 перший символ_;
- операції арифметичні: add, sub, *, /, %;
- операції порівняння: ==, !=, !>, !<
- операції логічні: not, and, or;
- коментар: {* *}
- ідентифікатори змінних, числові константи;
- оператор присвоєння: := ;
Для отримання виконавчого файлу на виході розробленого транслятора скористатися програмами tasm.exe і tlink.exe.
ЗМІСТ
АНОТАЦІЯ 2
ЗАВДАННЯ 3
ВСТУП 6
1. ОГЛЯД МЕТОДІВ ТА СПОСОБІВ ПРОЕКТУВАННЯ ТРАНСЛЯТОРІВ 7
1.1. Введення в компіляцію 7
1.2. Структура компілятора 7
1.3. Проходи компілятора 9
1.4. Засоби побудови компіляторів 10
1.5. Спрощена модель компілятора 11
1.6. Лексичний аналіз 13
1.7. Синтаксичний аналіз 14
2. ФОРМАЛЬНИЙ ОПИС ВХІДНОЇ МОВИ ПРОГРАМУВАННЯ 16
2.1. Деталізований опис вхідної мови в термінах розширеної нотації
Бекуса-Наура. 16
2.2. Термінальні символи та ключові слова 17
3. РОЗРОБКА ТРАНСЛЯТОРА ВХІДНОЇ МОВИ ПРОГРАМУВАННЯ 18
3.1. Вибір технології програмування 18
3.2. Проектування таблиць транслятора 19 3.3. Розробка лексичного аналізатора 21
3.4. Розробка синтаксичного та семантичного аналізатора 26
3.5. Розробка генератора коду 30
4. ОПИС ПРОГРАМИ (В ТОМУ ЧИСЛІ ГРАФ-СХЕМ) 31
5. ОПИС ІНТЕРФЕЙСУ ТА ІНСТРУКЦІЯ КОРИСТУВАЧЕВІ 37
6. ВІД ЛАГОДЖЕННЯ ТА ТЕСТУВАННЯ ПРОГРАМИ 38
6.1. Виявлення лексичних помилок 38
6.2. Виявлення синтаксичних помилок 38
6.3. Виявлення семантичних помилок 38
6.4. Загальна перевірка коректності роботи транслятора 39
7. ВИСНОВКИ ...